package com.ophiux.cs.application.user.service;

import com.ophiux.cs.application.core.Result;
import com.ophiux.cs.application.user.dto.D_GetDoctorUserInfoRequest;
import com.ophiux.cs.application.user.dto.D_GetDoctorUserInfoResponse;
import com.ophiux.cs.application.user.dto.LoginRequest;
import com.ophiux.cs.application.user.dto.LoginResponse;
import com.ophiux.cs.application.user.dto.addUserByDoctorRequest;
import com.ophiux.cs.application.user.dto.addUserByDoctorResponse;
import com.ophiux.cs.application.user.dto.addUserInfoRequest;
import com.ophiux.cs.application.user.dto.addUserInfoResponse;
import com.ophiux.cs.application.user.dto.addUserRecoreRequest;
import com.ophiux.cs.application.user.dto.addUserRecoreResponse;
import com.ophiux.cs.application.user.dto.getPatientInfoRequest;
import com.ophiux.cs.application.user.dto.getPatientInfoResponse;
import com.ophiux.cs.application.user.dto.getUserByUseridRequest;
import com.ophiux.cs.application.user.dto.getUserByUseridResponse;
import com.ophiux.cs.application.user.dto.getUserRecoreRequest;
import com.ophiux.cs.application.user.dto.getUserRecoreResponse;
import com.ophiux.cs.application.user.dto.updateUserInfoRequest;
import com.ophiux.cs.application.user.dto.updateUserInfoResponse;

public interface IUserAppService {

	/**
	 * 登录服务
	 * @param dto LoginRequest
	 * @return
	 */
	public Result<LoginResponse> Login(LoginRequest dto);
	/**
	 * 添加用户登录记录信息服务（未发布 内部使用）
	 * @param dto addUserRecoreRequest
	 * @return
	 */
	public Result<addUserRecoreResponse> addUserRecore(addUserRecoreRequest dto);
	
	/**
	 * 获取登录患者用户信息
	 * getPatientInfoRequest
	 * @param dto
	 * @return
	 */
	public Result<getPatientInfoResponse> getUserInfoByPatient(getPatientInfoRequest dto);
	/**
	 * 新增用户信息（患者）
	 * @param dto
	 * @return
	 */
	public Result<addUserInfoResponse> addUserInfo(addUserInfoRequest dto);
	/**
	 * 获取用户登录记录信息（未发布 内部使用）
	 * @param dto addUserRecoreRequest
	 * @return
	 */
	public Result<getUserRecoreResponse> getUserRecore(getUserRecoreRequest dto);
	/**
	 * 修改用户信息
	 * @param dto updateUserInfoRequest
	 * @return
	 */
	public Result<updateUserInfoResponse> updateUserInfo(updateUserInfoRequest dto);
	/**
	 * 新增用户信息（医生）
	 * @param dto
	 * @return
	 */
	public Result<addUserByDoctorResponse> addUserByDoctor(addUserByDoctorRequest dto);
	/**
	 * 根据userID获取用户信息
	 * @param dto
	 * @return
	 */
	public Result<getUserByUseridResponse> getUserByUserid(getUserByUseridRequest dto);
	
	/**
	 * 医生端  根据user_id获取医生端用户信息
	 * @param dto
	 * @return
	 */
	public Result<D_GetDoctorUserInfoResponse> getDoctorUserInfo(D_GetDoctorUserInfoRequest dto);
}
